package forum.client;

/**
 * A sort of advisory interface for the application's screens.
 * Defines consistent classes structure.
 * 
 * @author Mirsky
 * 
 */
public abstract class Screen {
	
	protected void init() {
		createComponents();
		setStyle();
		setTabOrder();
		setActions();
		setupScreenDisplay();
	}

	/**
	 * 
	 */
	protected abstract void createComponents();

	/**
	 * 
	 */
	protected abstract void setStyle();

	/**
	 * 
	 */
	protected abstract void setTabOrder();

	/**
	 * 
	 */
	protected abstract void setActions();
	
	/**
	 * 
	 */
	protected abstract void setupScreenDisplay();
	
	/**
	 * 
	 */
	public abstract void setupDisplayInMainPanel();
	
	/**
	 * 
	 */
	protected abstract String getInput();
	
}
